package com.librelato.negocio;

import java.util.List;
import java.util.Map;

import com.librelato.bean.HistoricoBean;
import com.librelato.bean.SolicitacaoBean;
import com.librelato.bean.UsuarioBean;
import com.librelato.negocio.interfaces.ISolicitacaoServico;
import com.librelato.negocio.validadores.IValidador;
import com.librelato.persistencia.SolicitacaoDao;
import com.librelato.persistencia.interfaces.IDaoGenerico;
import com.librelato.persistencia.interfaces.ISolicitacaoDao;

public class SolicitacaoServico<P extends SolicitacaoBean> extends
		ServicoGenerico<P> implements ISolicitacaoServico<P> {

	private ISolicitacaoDao<P> dao;

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public SolicitacaoServico() {
		this.dao = new SolicitacaoDao();
	}
	
	public void grava(SolicitacaoBean solici) throws Exception {
		this.dao.grava(solici);
	}
	
	@Override
	public List<P> buscaSolicitacaoComprador(String status, UsuarioBean usuario,Map<String, String> parametros)
			throws Exception {
		return this.dao.buscaSolicitacaoComprador(status, usuario,parametros);
	}

	@Override
	public List<SolicitacaoBean> buscaSolicitacoes(String dataDe,
			String dataAte, String numSolicita, String codProduto,
			String status, String filial, Integer idUser, boolean filtro)
			throws Exception {
		return this.dao.buscaSolicitacoes(dataDe, dataAte, numSolicita,
				codProduto, status, filial, idUser, filtro);
	}
	
	@Override
	public List<SolicitacaoBean> buscaSolicitacoes(Map<String, String> param,
			UsuarioBean usuario) throws Exception {
		return this.dao.buscaSolicitacoes(param, usuario);
	}
	
	@Override
	public void insereHistorico(SolicitacaoBean solicitacao, String descricao) throws Exception {
		this.dao.insereHistorico(solicitacao,descricao);
	}
	
	@Override
	public List<HistoricoBean> buscaHistoricos(SolicitacaoBean solicitacao)
			throws Exception {
		return this.dao.buscaHistoricos(solicitacao);
	}
	
	@Override
	public void excluir(SolicitacaoBean solicitacao) throws Exception {
		this.dao.excluir(solicitacao);
	}
	
	@Override
	public void editar(SolicitacaoBean solicitacao) throws Exception {
		this.dao.editar(solicitacao);		
	}

	@Override
	public P salvar(P usuario) {
		return null;
	}
	
	@Override
	public void liberaSolicitacao(SolicitacaoBean solicitacao) throws Exception {
		this.dao.liberaSolicitacao(solicitacao);
	}
	
	@Override
	public void rejeitaSolicitacao(SolicitacaoBean solicitacao)
			throws Exception {
		this.dao.rejeitaSolicitacao(solicitacao);
	}
	
	@Override
	public void trocaComprador(SolicitacaoBean solicitacao,String comprador) throws Exception {
		this.dao.trocaComprador(solicitacao,comprador);
	}
	
	@Override
	public void bloqueiaSolicitacao(SolicitacaoBean solicitacao)
			throws Exception {
		this.dao.bloqueiaSolicitacao(solicitacao);
	}

	@Override
	public IDaoGenerico<P> getDao() {
		return null;
	}

	@Override
	public IValidador<String> getStringValidador() {
		return null;
	}

	@Override
	public void preSalvar(P p) {

	}

	@Override
	public void posSalvar(P p) {

	}

	public List<P> buscaSolicitacoesCompradorConsulta(
			Map<String, String> param, UsuarioBean usuario) throws Exception{
		return this.dao.buscaSolicitacoesCompradorConsulta(param, usuario);
	}
	
	public SolicitacaoBean buscaDadosPedido(SolicitacaoBean solicitacao)
			throws Exception {
		return this.dao.buscaDadosPedido(solicitacao);
	}


}
